画像生成 AI の学習の実例
目次
PixArt-α
学習に 28,400 ドル(2025年のドル円レートで、およそ 400 万円)しかかかっていない安価なモデル。学習にかかった時間は 64 台の V100 で 26 日。ちなみに Stable Diffusion 1.5 の学習コストは 320,000 ドル。

出典:PixArt-α: Fast Training of Diffusion Transformer for Photorealistic Text-to-Image Synthesis. Junsong Chen et al. Table 4. https://arxiv.org/abs/2310.00426
V100 は 14 TFLOPS、RTX5090 は 105 TFLOPS なので、RTX5090 1台だと学習に 160 日かかる。400 万円で RTX5090 を 10 台買えば 16 日でできる(契約アンペアを 60A 以上にする必要がある)。
オプティマイザーは AdamW。
Stable Diffusion 3
データセットは conceptual-12m と ImageNet。
バッチサイズは 1,024 でオプティマイザーは AdamW、lr = 1e-4 で、1,000 ステップの線形ウォームアップ。
Lumina-Image 2.0
32 台の A100(FP32 は 19.5 TFLOPS) を使用。3段階の訓練でそれぞれ、191, 176, 224 GPU*Days。191 + 176 + 224 = 591GPU*Days、32 台で割ると学習日数は 18.5 日。オプティマイザーは AdamW。

出典:Lumina-Image 2.0: A Unified and Efficient Image Generative Framework. Qi Qin et al. Table 3. https://arxiv.org/abs/2503.21758
HiDream-I1
事前学習
256 x 256 を 600,000 ステップ。24 バッチ/GPU。
512 x 512 を 200,000 ステップ。8 バッチ/GPU。
1,024 x 1,024 を 200,000 ステップ。 2 バッチ/GPU。
AdamW, lr=1e-4, 1,000 ステップの線形ウォームアップ。mixed-precision と gradignt checkpointing を使用。
ファインチューニング
手動でキャプションを付けたハイクオリティな画像で 20,000 ステップ, lr=1e-5, グローバルバッチサイズ 64。
SANA
Pytorch DistributedDataParallel を使用し、64 台の A100 で、かかった時間は非公開。512 x 512 の解像度で 1e-4 の学習率で 200K ステップ以上事前学習を行い、1024 から 4096 へ解像度を増やしながら、2e-5 の学習率で最大 10K ステップの教師ありファインチューニングを行う。オプティマイザーは 8bit CAME。1.6B のモデルで、CAME 8bit は AdamW 8bit よりわずかに性能がよく、メモリ使用量は若干少ない(43GB vs 45GB)。
1/3 のレイヤーだけを使って事前学習させた後、乱数で初期化した残りの 2/3 のレイヤーを追加して学習させる。
DiT-Air
目的関数フローマッチング、オプティマイザーは AdaFactor、1e-4 の固定学習率。ハードウェアは TPU v5p。
- 解像度 256:バッチサイズ 4,096 で500k ステップ
- 解像度 512:バッチサイズ 2,048 で 100k ステップ
- 教師ありファインチューニング(SFT):バッチサイズ 64 で 2.5k ステップ。低解像度トレーニング時と同様の log-SNR タイムステップ分布シフト付き
- reward fine-tuning:バッチサイズ 64 で 4.8k ステップ
Nitro-T
学習期間は 32 AMD Instinct MI300X GPU で1日。
512px を 100k ステップ、1,024px を 20k ステップ。詳細は GitHub を参照。
REPA(DINO v2)はマスクしてないトークンにのみ適用。
データセット。()は使用枚数。
- Segment Anything 1B(10M)
- CC12m(7M)
- DiffusionDB(14M)
- JourneyDB(4M)
AI 生成画像を使いすぎると、画風がカートゥーン化する。JourneyDB は品質がよいので、ファインチューニングには DiffusionDB ではなく JourneyDB を使う。
Qwen-Image
Stage 1 事前学習:256x256 でアスペクト比は 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, 16:9, 1:3, 3:1。
Stage 2 ファインチューニング:以下の画像を除外する。
- EXIF を見て、回転・反転された画像
- ボケた画像
- 露出オーバー・アンダー
- 彩度が高すぎる等、加工しすぎた画像
- 商品写真のような背景が単色の画像
Stage 3 T2I Alignment:スクレイピングした画像を LLM・VLM でキャプションをつける
Stage 4 テキストレンダリング:データセットを、英語・中国語・その他の言語・画像内に文字なし、に分けて偏らないようにする。テキストが小さすぎる画像は除外。以下のような画像でデータを水増し。
- Stage 1:単色にテキストだけ書かれた画像を生成し訓練
- Stage 2:画像にテキストが書かれた紙を配置して訓練
- Stage 3:パワポのスライドを生成できるように、スライドの画像を生成して訓練
Stage 5 高解像度:解像度 640 で訓練。Aesthetic フィルターを使い低品質な画像を除外。QR コードやサインなどがある画像も除外
Stage 6 カテゴリバランスの調整:カテゴリごとにテストして、能力の低い部分を追加学習
Stage 7 高解像度2:640~1,328 解像度で訓練
Z-Image
- 314K H800 GPU hours
- 628K ドル
- データセットに AI 生成画像を含んでいない
- Low-res. Pre-Training: 147.5k gpu hours
- Omni-Pre-Training 142.5k gpu hours
- Post-Training 24k gpu hours
データインフラ
正しいステージで正しいデータを取得できるようにするために以下のツールを開発した。データセットは質が重要で多様な概念を含みかつ意味的に重複のないデータが必要だ。
- 多次元特徴抽出のためのデータプロファイリングエンジン
- 画像のメタデータ(解像度・アスペクト比)や明瞭度、画像に何があるかなどで検索できる
- perceptual hash で重複の検出
- カラーシフト・ボケ・ウォーターマーク・圧縮ノイズなどの要素から画像品質をスコア付けするモデルを作成
- 単色背景を検出して自動クロップ
- 美的スコアモデルを作成
- AI 生成画像検出モデルを作成
- 画像を自動タグ付けする VLM を作成。NSFW フィルタもこのモデルで行う
- CN-CLIP でキャプション品質が低いものを学習から除去
- データセットのキャプションは、タグのみ・短いキャプション・詳細なキャプションの3つ
- 意味重複除去と対象取得のためのクロスモーダルベクターエンジン
- k-nearest neighbor 検索関数を使う。8台の H800 で 10 億枚の画像を8時間で処理できる
- 構造的概念組織化のための世界知識トポロジーグラフ。これはデータセット内で不足しているデータを分析できる
- VLM の学習ソースは Wikipedia とそのリンク先。ページランクの低いものは除く
- 学習ソース DB は手動更新可能。ユーザープロンプトから DB に存在しない概念を検出して更新する
- 閉ループ改善のためのアクティブキュレーションエンジン
- モデルがうまく描けない概念の検出
- ループを実行するごとにデータのアノテーション品質が改善される
- うまくキャプション付けできなかった画像は人力で修正し、修正内容を元にキャプション付け VLM を修正
Edit モデルのためのデータ生成
- 既存の Edit モデルが上手くこなせるタスクは既存の Edit モデルを使ってデータを生成する
- 1枚の画像から複数の編集後画像を作成する
- 動画から類似度の高いフレームを抜き出し(CN-CLIP 使用)、それを学習素材にする
- テキスト画像を生成するシステムを作成し、それを使ってテキスト描画を学習させる
キャプショナー
キャプショナーは Chain-of-Thought の要領で徐々に詳細なキャプションを生成する。
t2i の画像をキャプショナーに入れると、順に、タグ・短いキャプション・詳細なキャプションの3つを出力する。短いキャプションはユーザー入力を再現している。
i2i の画像ペアをキャプショナーに入れると、順に、2つの画像それぞれのキャプション・分析(入力された2つの画像の差異を出力)・修正指示の3つを出力する。
VLM には OCR で読み取ったテキスト情報も入れる。
学習戦略
- 低解像度事前学習。2562 の固定解像度で事前学習
- Omni-Pre-Training。可変解像度で t2i・i2i 学習
までは共通。
Z-Image は
- プロンプトエンハンサーを使用した SFT
- 新しい蒸留モデル作成技術
- Decoupled DMD。蒸留プロセスの画質向上と学習安定化との役割を分離
- DMDR。正則化項に distribution matching 項を追加することで蒸留に強化学習を統合
- 強化学習(RLHF)
Z-Image Edit は
- 画像編集のための事前学習
- 画像編集のための SFT
並列学習のために FSDP2 を使い、GPU 間に効率的にオプティマイザステートと勾配とを分配した。モデルのすべてのレイヤーに gradient checkpointing を実装し、メモリ量を削減した。計算量は増えるがバッチサイズを大きくすることでスループットを向上させた。
torch.compile 使用。
aspect ratio bucketing ではなく、画像解像度からシーケンス長を計算し、バッチ内ではシーケンス長が大体同じになるようにした。シーケンス長が大きく異なると短いシーケンスには大きいパディングが必要になり、学習が遅くなる。平均シーケンス長からバッチサイズを動的に制御し、OOM にならないようにしている。
事前学習
解像度 2562 のみの t2i 学習。
全体事前学習
- 可変解像度学習
- t2i・i2i 学習。この i2i は Edit 用の i2i 学習。i2i 学習をしても t2i の性能は劣化しなかった
- 中英キャプション学習・キャプションの詳細度(タグのみ・短・中・長)を変更した学習。i2i では、編集後のみのキャプションと、差分情報のみのキャプションとをランダムに使用
この段階で 1k-1.5k の解像度に対応させる。
教師ありファインチューニング(SFT)
SFT ではサンプルの少ないロングテール概念を忘れる、破滅的忘却が起こりやすい。そこで SFT 段階でクラスバランシングを強制した。世界知識トポロジーグラフと BM25 ベースのモデルとでリアルタイムに学習素材のレア度を計算。特定のアーティストや概念が学習画像に含まれすぎないようにした。
マージチューニング
プロンプト忠実性優先や美的スコア優先など複数のファインチューンモデルを作成し、マージ比率を調整することでベストなモデルを作成した。
蒸留
最初は DMD を使って蒸留モデルを作成したが、周波数成分の高いディティールの消失やカラーシフトが発生した。そこで Decoupled DMD と DMDR とを開発した。
DMD には以下の2つのメカニズムが存在する
- CFG-Augumentation(CA):機能はステップ数削減
- 分布マッチング(DM):機能は正則化
これらを個別に最適化することで DMD の性能を向上させた(Decoupled DMD)。
DMD に強化学習の損失を追加したのが DMDR。分布マッチングの正則化を効かせることで、強化学習の報酬ハッキングを抑制できる。
RLHF
DPO の後に GRPO を行う。
品質基準は以下の3つ
- プロンプト忠実性
- AI フィルタ通過
- 美的品質
プロンプト忠実性は以下の視点から評価する。人間の評価者は満たしていないと思う項目をクリックするだけ。
- 主題
- 属性
- 動作・インタラクション
- 空間位置
- スタイル・ライティング
テキストレンダリングや物体の個数計数タスクは VLM を使った RLVR を使う。
GRPO
評価基準は以下の3つ
- プロンプト忠実性
- フォトリアル
- 美的品質
Edit モデル
ベースモデルを作成した後、Edit モデルは Edit 用の事前学習を行う。Edit 用の事前学習では 5122 の編集タスクを数千ステップだけやり直したあと、10242 で事前学習を続ける。i2i データは作成が高コストなので、t2i データ4に対し、i2i データ1の割合で学習させる。
Edit モデルの教師ありファインチューニング
テキストレンダリングの割合は減らしてある。DTP ソフトを使えば 100% 正確な画像が手に入るし、ユーザーもそのような指示をする割合が低いので。
モデルサイズが限られているので、プロンプトエンハンサー(PE)で性能を底上げすることにした。プロンプトエンハンサーは VLM の推論モデル。プロンプトを PE に入れてプロンプトを水増しして教師ありファインチューニングを行う。
Illustrious
| バージョン | ステップ数 | バッチサイズ | データ枚数 | プロンプトスタイル | アノテーション手法 | 解像度 |
|---|---|---|---|---|---|---|
| 0.1 | 781,250 | 192 | 7.5M | タグベース | オリジナルプロンプト + 手動フィルタリング/再構成 | 1,024 |
| 1.0 | 625,000 | 128 | 10M | タグベース | オリジナルプロンプト + 手動フィルタリング/再構成 | 1,536 |
| 1.1 | 93,750 | 512 | 12M | タグベース | マルチレベルキャプション | 1,536 |
| 2.0 | 78,125 | 512 | 20M | タグベース | マルチレベルキャプション | 1,536 |
- タグベース:Danbooru形式などのタグによるプロンプト設計
- マルチレベルキャプション:タグと自然言語キャプションを併用した注釈方式
- 手動フィルタリング/再構成:クリーンデータの選別やタグ整備の工程を含む
Danbooru 画像とタグは以下の問題がある
- 同一トークンに複数の意味が重なることが多く、曖昧性や誤解の原因になる
- 例:「doctor」というタグは職業名としてもキャラクター名としても使われる
- 画像にタグが極端に少ないものが存在する
- 極端に高解像度な画像がある
- 極端なアスペクト比の画像がある
- コミック形式の画像がある
キャプション構造
NovelAI のようなタグオーダーを採用している。
人数 ||| キャラ名 ||| レーティング ||| 一般タグ ||| アーティスト名 ||| パーセンタイルベースのレーティング ||| 年代
最初はパーセンタイルベースではなく、スコアレンジベースのレーティングだった。しかしスコアレンジは年代やカテゴリでばらつきが大きかったので、以下のようなパーセンタイルベースのレーティングを採用することにした。
| レーティングタグ | パーセンテージ |
|---|---|
| worst quality | ~8% |
| bad quality | ~20% |
| average quality | ~60% |
| good quality | ~82% |
| best quality | ~92% |
| masterpiece | ~100% |
解像度
v2.0 では 0.15MP(500px * 300px)から 2.25MiP(1536 px * 1536px / (1024*1024) = 2.25)。
訓練方法
- No Dropout Token。性的(provocative)なトークンを含む NSFW トークンはドロップアウトしない。加えて NSFW トークンを CFG で制御(つまりネガティブプロンプトに NFSW トークンを入れる)することで 100% 性的なコンテンツを生成しないモデルを作成できた。
- コサインアニーリング
- 疑似レジスタートークン。データ数が少なかったりモデルが理解できない概念を吸わせるトークンを入れる。シーケンス長を調整するためのパディングトークンがレジスタートークンとして機能してしまうことがあるので注意が必要。
- キャラ名とアーティスト名をドロップアウトしない Contrastive Learning(ラベルなしで学習させる手法)。キャラの特徴とアーティストのスタイルを効率よく学習できる。ただし、アーティストとキャラとの結びつきが強くなる欠点がある。
- キャプションの言い換え。"1girl" を "one girl", "single woman" に一定確率で入れ替える。
- マルチレベルドロップアウト。No Dropout Token 以外のトークンは以下ドロップアウトのどれかが確率的に適用される。
- 30%: max(0.3 * total tokens, 10)
- 20%: max(0.4 * total tokens, 15)
- 10%: min(total tokens, 6)
- 4%: min(total tokens, 4)
- 36%: ドロップアウトなし?(論文に記載なし)
- Input Perturbation Noise Augmentation(0 < ε < 0.1)(Ning et al. [2023])
- Debiased Estimation Loss(Yu et al. [2024])
訓練設定
| バージョン | データ枚数 | バッチサイズ | 学習率 | テキストエンコーダー学習率 | エポック | 解像度 | プロンプトスタイル | ドロップアウト | レジスタトークン | マルチキャプション |
|---|---|---|---|---|---|---|---|---|---|---|
| 0.1 | 7.5M | 192 | 4.5e-6 | 20 | 1,024 | タグ | ✖ | ✖ | ✖ | |
| 1.0 | 10M | 128 | 1e-5 | 6e-6 | 8 | 1,536 | タグ | 〇 | 〇 | ✖ |
| 1.1 | 12M | 512 | 3e-5 | 4e-6 | 4 | 1,536 | タグ+ | 〇 | 〇 | ✖ |
| 2.0 | 20M | 512 | 4e-5 | 3e-6 | 2 | 1,536 | タグ+ | 〇 | 〇 | 〇 |
v0.1 が 150M ステップなので、1 step/s だとしても 1,736 日かかる。16 GPU で 109 日。少なくとも 10step/s ぐらいの速度が出ないと厳しい。
ファインチューニングの問題点
ユーザーの評価をフィードバックさせたファインチューニングは生成される画像の多様性がなくなる。流行の画風が高く評価され、AI が上手く書けない手や背景などを描かなくなる。
Illustrious がファインチューニング前のモデルを公開しているのはこれが理由だ。ファインチューニング版を LoRA 形式で配布する方法も考えられる。